﻿using Message;
using System;
using System.Collections.Generic;

/// <summary>
/// 消息字典
/// </summary>
public class ProtoDic
{
    private static List<int> _protoId = new List<int>();
    private static List<Type> _protoType = new List<Type>();

    static ProtoDic()
    {
        _protoId.Add(1001);
        _protoType.Add(typeof(C2SRegister));
        _protoId.Add(1002);
        _protoType.Add(typeof(S2CRegisterRet));

        _protoId.Add(1003);
        _protoType.Add(typeof(C2SLogin));
        _protoId.Add(1004);
        _protoType.Add(typeof(S2CLoginRet));

        _protoId.Add(1005);
        _protoType.Add(typeof(C2SHeatBeat));
        _protoId.Add(1006);
        _protoType.Add(typeof(S2CHeatBeat));

        _protoId.Add(1007);
        _protoType.Add(typeof(C2SLogout));
        _protoId.Add(1008);
        _protoType.Add(typeof(S2CLogoutRet));

        _protoId.Add(1009);
        _protoType.Add(typeof(C2SChat));
        _protoId.Add(1010);
        _protoType.Add(typeof(S2CChat));

        _protoId.Add(1011);
        _protoType.Add(typeof(C2SAddFriend));
        _protoId.Add(1012);
        _protoType.Add(typeof(S2CAddFriend));

        _protoId.Add(1013);
        _protoType.Add(typeof(C2SAddFriendRet));
        _protoId.Add(1014);
        _protoType.Add(typeof(S2CAddFriendRet));

        _protoId.Add(1015);
        _protoType.Add(typeof(C2SDelFriend));
        _protoId.Add(1016);
        _protoType.Add(typeof(S2CDelFriend));

        _protoId.Add(1017);
        _protoType.Add(typeof(C2SDelFriendRet));
        _protoId.Add(1018);
        _protoType.Add(typeof(S2CDelFriendRet));

        _protoId.Add(1019);
        _protoType.Add(typeof(C2SGetPlayerList));
        _protoId.Add(1020);
        _protoType.Add(typeof(S2CGetPlayerList));

        _protoId.Add(1021);
        _protoType.Add(typeof(C2SMove));
        _protoId.Add(1022);
        _protoType.Add(typeof(S2CMoves));

        _protoId.Add(1023);
        _protoType.Add(typeof(C2SCreatRole));
        _protoId.Add(1024);
        _protoType.Add(typeof(S2CCreatRoleRet));

        _protoId.Add(1025);
        _protoType.Add(typeof(C2SDelRole));
        _protoId.Add(1026);
        _protoType.Add(typeof(S2CDelRoleRet));

        _protoId.Add(1027);
        _protoType.Add(typeof(C2SGetRoles));
        _protoId.Add(1028);
        _protoType.Add(typeof(S2CGetRolesRet));

    } 

    public static Type GetProtoTypeByProtoId(int protoId)
    {
        int index = _protoId.IndexOf(protoId);
        return _protoType[index];
    }

    public static int GetProtoIdByProtoType(Type type)
    { 
        int index = _protoType.IndexOf(type);
        return _protoId[index];
    }

    public static bool ContainProtoId(int protoId)
    {
        if (_protoId.Contains(protoId))
        {
            return true;
        }
        return false;
    }

    public static bool ContainProtoType(Type type)
    {
        if (_protoType.Contains(type))
        {
            return true;
        }
        return false;
    }
}